#ifndef XGE_XSIMPLE_UNITTEST_CASE_INL_H_
#define XGE_XSIMPLE_UNITTEST_CASE_INL_H_

// A middle wrapper for detaching the inherited class

#define UNIT_TEST_VERSION_1(test_family,test_case_name,parent_class) \
class UNIT_TEST_NAME_(test_family,test_case_name) : public parent_class { \
public: \
  virtual void SetUp() { \
  } \
  virtual void TearDown() { \
  } \
  virtual void UnitTest() { \
  TestBody(); \
  } \
  void TestBody(); \
  UNIT_TEST_NAME_(test_family,test_case_name)() {} \
private: \
  DISALLOW_COPY_AND_ASSIGN( \
  UNIT_TEST_NAME_(test_family,test_case_name) ); \
}; \
  UNIT_TEST_MAKE_REGISTER_CLASS(test_family,test_case_name) \
  void \
  UNIT_TEST_NAME_(test_family,test_case_name)::TestBody()

#endif// XGE_XSIMPLE_UNITTEST_CASE_INL_H_